package com.caiheng.api.dao.product;

import com.caiheng.api.dao.BaseDao;
import com.caiheng.api.entity.product.ProductOrder;
import com.caiheng.api.entity.dto.WalletDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Mapper
public interface ProductOrderMapper extends BaseDao<ProductOrder> {

    WalletDto getAllMoneyByMerIdAndTime(@Param("map") Map<String,Object> map);

    ProductOrder getOrderByOrderNo(@Param("order_no") String order_no);

    int getOrderCountByState(@Param("user_id") Integer user_id, @Param("state") Integer state);

    int updateGroupOpenId(@Param("id") Long id, @Param("openGroupId") Integer openGroupId);

    int getOrderCountByTime(@Param("seller_id") Integer seller_id, @Param("state") Integer state, @Param("begin_date") Date begin_date, @Param("end_date") Date end_date);

    /**
     * 查询某个用户的订单
     * @param userId
     * @param state
     * @param offset
     * @param pageSize
     * @return
     */
    List<ProductOrder> selectByUserId(@Param("userId") int userId, @Param("state") int state, @Param("offset") int offset, @Param("pageSize") int pageSize);

    /**
     * 卖家查询所有卖出的订单
     * @param sellerId
     * @param state
     * @param offset
     * @param pageSize
     * @return
     */
    List<ProductOrder> selectBySellerId(@Param("sellerId") int sellerId, @Param("order_type") int order_type,
                                  @Param("state") int state, @Param("offset") int offset, @Param("pageSize") int pageSize);

    /**
     * 卖家查询所有卖出的订单
     * @param sellerUserId
     * @param state
     * @param offset
     * @param pageSize
     * @return
     */
    List<ProductOrder> selectBySellerUserId(@Param("sellerUserId") int sellerUserId, @Param("order_type") int order_type,
                                      @Param("state") int state, @Param("offset") int offset, @Param("pageSize") int pageSize);


    /**
     * 获取当前商品的购买数量
     * @param userId
     * @param productId
     * @return
     */
    int getLimitOrderByProductId(@Param("userId") Integer userId, @Param("productId") Integer productId);

}
